package edu.unmsm.ocaa.sisocaa.negocio.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import edu.unmsm.ocaa.sisocaa.negocio.model.dto.OpcPregFichaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.OpcconRespDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.PregFichaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.PregFichaconOpcDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.PregFichaconRespDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.Rep1DTO;
import edu.unmsm.ocaa.sisocaa.negocio.service.OpcPregFichaService;
import edu.unmsm.ocaa.sisocaa.negocio.service.PregFichaService;
import edu.unmsm.ocaa.sisocaa.negocio.service.Rep2Service;
import edu.unmsm.ocaa.sisocaa.negocio.service.RespuestaService;

@Service
public class Rep2ServiceImpl implements Rep2Service {
	@Resource
	PregFichaService pregserv;
	@Resource
	RespuestaService respserv;
	@Resource
	OpcPregFichaService opcserv;
	@Override
	public List<PregFichaconOpcDTO> listarRep2(Integer idFicha, Integer idDep)
			throws DataAccessException {
		List<PregFichaconOpcDTO> listpregconopc=new ArrayList<PregFichaconOpcDTO>();
		List<PregFichaDTO> listpreg=pregserv.listarPregxFicha(idFicha);
		for (int j = 0; j < listpreg.size(); j++) {
			PregFichaDTO preg=listpreg.get(j);
			PregFichaconOpcDTO pregconopc=new PregFichaconOpcDTO();
			pregconopc.setDsc_pregficha(preg.getDsc_pregficha());
			pregconopc.setId_ficha(preg.getId_ficha());
			pregconopc.setId_pregficha(preg.getId_pregficha());
			pregconopc.setListopc(opcserv.listarOpcionesconResp(idFicha, 
					preg.getId_pregficha(),idDep));
			listpregconopc.add(pregconopc);
		}
		return listpregconopc;
	}

	@Override
	public List<PregFichaconOpcDTO> listarRep2xDep(Integer idFicha,
			Integer idDep) throws DataAccessException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<PregFichaconOpcDTO> listarRep3(Integer idFichaParam, Integer id_dep, Integer pond) {
		// TODO Auto-generated method stub
		List<PregFichaconOpcDTO> listpregconopc=new ArrayList<PregFichaconOpcDTO>();
		List<PregFichaDTO> listpreg=pregserv.listarPregxFicha(idFichaParam);
		for (int j = 0; j < listpreg.size(); j++) {
			PregFichaDTO preg=listpreg.get(j);
			PregFichaconOpcDTO pregconopc=new PregFichaconOpcDTO();
			pregconopc.setDsc_pregficha(preg.getDsc_pregficha());
			pregconopc.setId_ficha(preg.getId_ficha());
			pregconopc.setId_pregficha(preg.getId_pregficha());
			pregconopc.setPorcTotPuntajes(opcserv.obtenerTotPuntajes(idFichaParam,preg.getId_pregficha(), id_dep, 0));
			pregconopc.setPorcTotPuntajes2(opcserv.obtenerTotPuntajes(idFichaParam,preg.getId_pregficha(), id_dep, 1));
			pregconopc.setPorcTotPuntajes2((double)(Math.round((pregconopc.getPorcTotPuntajes2()/pregconopc.getPorcTotPuntajes())*10000)/100));
			listpregconopc.add(pregconopc);
		}
		return listpregconopc;
	}

	@Override
	public List<PregFichaconOpcDTO> listarRep21(Integer id_fichaParam,
			Integer id_depParam) {
		List<PregFichaconOpcDTO> listpregconopc=new ArrayList<PregFichaconOpcDTO>();
		List<PregFichaDTO> listpreg=pregserv.listarPregxFicha(id_fichaParam);
		for (int j = 0; j < listpreg.size(); j++) {
			PregFichaDTO preg=listpreg.get(j);
			PregFichaconOpcDTO pregconopc=new PregFichaconOpcDTO();
			pregconopc.setDsc_pregficha(preg.getDsc_pregficha());
			pregconopc.setId_ficha(preg.getId_ficha());
			pregconopc.setId_pregficha(preg.getId_pregficha());
			pregconopc.setListopc(opcserv.listarOpcionesconResp(id_fichaParam, 
					preg.getId_pregficha(),id_depParam));
			Double totalSegundaPonderacion=0.00;
			for (int i = 0; i < pregconopc.getListopc().size(); i++) {
				if (pregconopc.getListopc().get(i).getPtje1().equals(1)) {
					totalSegundaPonderacion=totalSegundaPonderacion+pregconopc.getListopc().get(i).getNumeroRespondidas();
				}
			}
			List<OpcconRespDTO> listOpc2=new ArrayList<OpcconRespDTO>();
			for (int i = 0; i < pregconopc.getListopc().size(); i++) {
				if (pregconopc.getListopc().get(i).getPtje1().equals(1)) {
					OpcconRespDTO opc2=new OpcconRespDTO();
					opc2.setNumeroRespondidas((double)(Math.round((pregconopc.getListopc().get(i).getNumeroRespondidas()/totalSegundaPonderacion)*10000)/100));
					opc2.setDesc_opcpregficha(pregconopc.getListopc().get(i).getDesc_opcpregficha());
					opc2.setId_ficha(id_fichaParam);
					opc2.setId_opcpregficha(pregconopc.getListopc().get(i).getId_opcpregficha());
					opc2.setId_pregficha(pregconopc.getListopc().get(i).getId_pregficha());
					listOpc2.add(opc2);
				}
			}
			pregconopc.setListopc2(listOpc2);
			listpregconopc.add(pregconopc);
		}
		return listpregconopc;
	}

}
